-
Notifications
You must be signed in to change notification settings - Fork 199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Get mitogen.fakessh module working again #683
base: master
Are you sure you want to change the base?
Conversation
if not self.config['profiling'] and not hasattr(mitogen, "exit_status"): | ||
os.kill(os.getpid(), signal.SIGTERM) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This part of the change is hacky and was meant to be temporary. I'd appreciate any suggestions on replacing it.
I think I will want to the replace the mitogen.exit_status
variable with a less general fakessh.exit_status
variable, and add a separate self.config['term_on_exit']
option to control whether SIGTERM is sent when the broker shuts down.
@ryanofsky please could you update this to current master. Otherwise, may I update this branch on your behalf? |
Hi! I think I can update the branch in the next few days or so, but if you're interested to do it sooner or take this over, it'd be more than welcome. Happy to add permissions to my github branch if that would help. |
Hmm, apparently it was just a release notes documentation conflict so I used the github web interface to resolve it. The merge seems ok, but I can update if you want a different commit structure (maybe a rebase), or if something isn't working. Feel free to make any changes, also. |
Fixes include - Setting cloexec flag on pipe files, using set_inheritable on sockets, and close_fds=False on subprocess.Popen to work around file descriptors not being inheritable by default in new versions of python - Adding mitogen.exit_status variable and avoiding os.kill call so fake 'ssh' script is able to exit cleanly with correct status code - Fixing broken os.dup call in ExternalContext._setup_master when input and output streams have the same descriptor - Updating fakessh module to do necessary python3 string/byte conversions, and use updated mitogen Protocol, Stream, and Router apis - Simplifying fakessh startup sequence so there aren't unnecessary differences between ways control and data handles are passed, and ways master and slave processes are initialized - Fixing shutdown race conditions where subprocess exit handling or stdin EOF handling could result in a truncated stdout stream - Updating and adding a lot of docstrings and comments - Adding Process.proc is None / is not None assertions to be clear about which parts of fakessh.Process code are specific to the slave process, and which parts are specific to the master process. - Re-enabling unit test case and updating an outdated file path so it passes
5c146b1
to
41dfca2
Compare
It seems that while this PR does restore fakessh functionality, taking it from a completely broken state to an updated and working state, there are still problems in CI. One way to move forward with this PR might be to merge the code changes but keep the Looking at logs there seem to be 3 distinct CI issues:
|
Fixes include - Setting cloexec flag on pipe files, using set_inheritable on sockets, and close_fds=False on subprocess.Popen to work around file descriptors not being inheritable by default in new versions of python - Adding mitogen.exit_status variable and avoiding os.kill call so fake 'ssh' script is able to exit cleanly with correct status code - Fixing broken os.dup call in ExternalContext._setup_master when input and output streams have the same descriptor - Updating fakessh module to do necessary python3 string/byte conversions, and use updated mitogen Protocol, Stream, and Router apis - Simplifying fakessh startup sequence so there aren't unnecessary differences between ways control and data handles are passed, and ways master and slave processes are initialized - Fixing shutdown race conditions where subprocess exit handling or stdin EOF handling could result in a truncated stdout stream - Updating and adding a lot of docstrings and comments - Adding Process.proc is None / is not None assertions to be clear about which parts of fakessh.Process code are specific to the slave process, and which parts are specific to the master process. - Re-enabling unit test case and updating an outdated file path so it passes pull mitogen-hq#683: update changelog
> the method only exists in python3. It should be pretty easy to fix because the call isn't necessary in python2 (descriptors are inherited by default there). -- mitogen-hq#683 (comment) Co-authored-by: Ryan Ofsky <[email protected]
Fixes include
Setting cloexec flag on pipe files, using set_inheritable on sockets,
and close_fds=False on subprocess.Popen to work around file
descriptors not being inheritable by default in new versions of python
Adding mitogen.exit_status variable and avoiding os.kill call so fake
'ssh' script is able to exit cleanly with correct status code
Fixing broken os.dup call in ExternalContext._setup_master when input
and output streams have the same descriptor
Updating fakessh module to do necessary python3 string/byte
conversions, and use updated mitogen Protocol, Stream, and Router apis
Simplifying fakessh startup sequence so there aren't unnecessary
differences between ways control and data handles are passed, and ways
master and slave processes are initialized
Fixing shutdown race conditions where subprocess exit handling or
stdin EOF handling could result in a truncated stdout stream
Updating and adding a lot of docstrings and comments
Adding Process.proc is None / is not None assertions to be clear about
which parts of fakessh.Process code are specific to the slave process,
and which parts are specific to the master process.
Re-enabling unit test case and updating an outdated file path so it
passes